package cn.hls.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import cn.hls.dao.SmsInfoDao;
import cn.hls.entity.SmsInfo;
import cn.hls.entity.vo.PageInfo;
 
/**
  *@fileName: SmsInfoDaoImpl.java
  *@package: cn.hls.dao.impl
　*@Description:短信发送数据操作接口实现类
　*@author: yinghui.zhang
　*@email: uuhui@163.com
  *@date: 2016年12月25日
 *
 */
@Component("smsInfoDao")
public class SmsInfoDaoImpl extends BaseDaoImpl<SmsInfo> implements
		SmsInfoDao {
 

	@Override
	public PageInfo<SmsInfo> loadSmsInfo(PageInfo<SmsInfo> page,
			SmsInfo entity) throws Exception {
		//定义查询hql
		StringBuilder selectHql=new StringBuilder("from SmsInfo  p inner join fetch p.member m ");
		//定义汇总hql
		StringBuilder countHql=new StringBuilder("select count(p.id) from SmsInfo p inner join p.member m ");
		//定义查询条件
		StringBuilder conditionHql=new StringBuilder("where p.deleted=? ");
		List<Object>params=new ArrayList<Object>();
		params.add(false);
		if(entity!=null){
			//按开始时间查询
			 if(entity.getBeginTime()!=null){
				 conditionHql.append("and p.sendTime>=? ");
				 params.add(entity.getBeginTime());
			 }
			 //按结束时间查询
			 if(entity.getEndtime()!=null){
				 conditionHql.append("and p.sendTime<=? "	);
				 params.add(entity.getEndtime());
			 }
			 //查询人员查询
			 if(entity.getMember()!=null){
				 //按人员编号编号
				 if(entity.getMember().getId()!=null){
					 conditionHql.append("and m.id=? ");
					 params.add(entity.getMember().getId());
				 }
				 //按人员名称查询
				 if(StringUtils.hasText(entity.getMember().getName())){
					 conditionHql.append("and m.name like ? ");
					 params.add("%"+entity.getMember().getName().trim()+"%");
				 }
			 }
			 //按短信发送状态查询
			 if(entity.getStatus()!=null){
				 conditionHql.append("and p.status=? ");
				 params.add(entity.getStatus());
			 }
		}
		selectHql.append(conditionHql);
		countHql.append(conditionHql);
		selectHql.append("order by p.id desc ");
		return find(selectHql.toString(), countHql.toString(), params.toArray(), page);
	}
}
